SQL进阶17-变量的声明/使用(输出)--全局变量/会话变量--用户变量/局部变量

/*进阶17 变量
系统变量:
    全局变量:
    会话变量:
    
自定义变量:
    用户变量:
    局部变量:

*/
/*
#一: 系统变量
#说明: 变量由系统提供,不是用户定义的,属于服务器层面
#使用的语法

#1/查看所有的系统变量,
show global /[session] variables;

2.查看满足条件的部分系统变量
show global/[session] variables like '%char%';

3.查看指定的某个系统变量的值
select @@global/[session] .系统变量名;

4.为某个系统变量赋值
方式一:
    set global/[session] 系统变量名=值;
方式二:
    set @@global/[session].系统变量名=值;

注意:
    如果是全局级别,则需要加上global;
    如果是会话级别,则需要加上session ;【如果不写,默认是这个】
*/
/*
#2>> 会话变量
  作用域 : 仅对当前会话(查询的sql文件 / 连接) 有效

#① : 查看所有的会话变量
SHOW  VARIABLES;    #547行
SHOW SESSION VARIABLES;  #547行

#② : 查看部分的会话变量
SHOW VARIABLES LIKE '%char%';
SHOW SESSION VARIABLES LIKE '%char%'; 

*/
/*
#2>> 会话变量
  作用域 : 仅对当前会话(查询的sql文件 / 连接) 有效

  对比用户变量和局部变量:
              作用域       定义和使用的位置           语法
   用户变量:   当前会话    会话中的任何地方           必须加@符号,不用限定类型
    
   局部变量:   begin end中  只能在begin end中,且      一般不用加@符号,需要限定类型
                 为第一句话
  
  
*/
#1》 全局变量
    #① 查看所有的全局变量
SHOW GLOBAL VARIABLES;
    #② 查看部分的全局变量
SHOW GLOBAL VARIABLES LIKE 'character%';
    #③ 查看指定的全局变量
SELECT @@global.autocommit;  #1

#④: 为某个指定的全局变量赋值
SET @@global.autocommit=0;   #0

#2>> 会话变量
/*
  作用域 : 仅对当前会话(查询的sql文件 / 连接) 有效
*/

#① : 查看所有的会话变量
SHOW  VARIABLES;    #547行
SHOW SESSION VARIABLES;  #547行

#② : 查看部分的会话变量
SHOW VARIABLES LIKE '%char%';
SHOW SESSION VARIABLES LIKE '%char%'; 

#③ : 查看指定的某个会话变量
     #select @@tx_isolation;  #不支持
#select @@session.tx_isolation; #不支持查询隔离级别

#④ : 为某个会话变量赋值
    #set @@tx_isolation='read-uncommitted'; #不支持更改隔离级别
    #SET session @@tx_isolation='read-uncommitted';

#二: 自定义变量
/*
    说明: 变量是用户自己进行定义的,不是由系统提供的;
    使用步骤: 声明/赋值/使用(查看/比较/运算等..)
        
*/

#1.用户变量
    #作用域:针对当前会话(连接)有效,同于会话变量的作用域
#赋值的操作符: =或:=
    #① 声明并初始化
    SET @用户变量名=值;
    SET @用户变量名:=值;
    SELECT @用户变量名:=值;
    
#方式二:通过select into
    SELECT 字段 INTO 变量名
    FROM 表;
#输出结果
    SELECT @num;

#案例:
    SET @name='john';
    SET @name=100;
        #声明并初始化
    SELECT COUNT(*) INTO @num
    FROM employees;

    SELECT @num;
#-----------------------------
 
 #2.局部变量 ------没办法实践!!实践错!!!!
/*
    作用域:仅仅作用在定义它的begin end中有效
    应用在begin end中的第一句话
    
*/
#① 声明
DECLARE 变量名 类型;
DECLARE 变量名 类型 DEFAULT 值;
#① 赋值
    SET 局部变量名=值;
    SET 局部变量名:=值;
  SELECT @用户变量名:=值;    
   #方式二:通过select into
    SELECT 字段 INTO 局部变量名
    FROM 表;
#③ 使用
SELECT 局部变量名;
# 案例---------------

#1.使用用户变量实现加法
SET @m=1;
SET @n=2;
SET @sum=@m+@n;
SELECT @sum;

#2.使用局部变量实现加法

 

使用示例:

我们需要在xxl_job_info表中新建一条记录,但该记录的一个字段`job_group`需要关联其他的表,不同的环境中,该id值不唯一;这里使用自定义变量,来实现相关上线SQL的需求。

自定义变量的SQL使用如下:

 

 

 执行结果:

 

 

 

 

 

posted @ 2018-10-31 18:38  山枫叶纷飞  阅读(1412)  评论(0编辑  收藏  举报